package com.file_.ObjectInputAndOutputStream;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/*
 * 使用ObjectOutputStream序列化 基本数据类型和一个Dog对象(name, age)，
 * 并保存到data.dat文件中
 * */
public class Demo1 {
    public static void main(String[] args) throws IOException {
        // 序列化后，保存的文件格式，不是存的文本格式，而是会按照他自己的格式保存，
        // 所以会打开文件阅读时，会有乱码，这是正常现象
        String filePath = "D:\\A_Test\\data.dat";
        // 1、创建序列化对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
        // 2、序列化数据
        // （1）保存基本数据类型和数据
        oos.writeInt(1);  // int->Integer（实现了Serializable）
        oos.writeBoolean(true);  // boolean->Boolean（实现了Serializable）
        oos.writeChar('a');  // char->Character（实现了Serializable）
        oos.writeDouble(1.1);  // double->Double（实现了Serializable）
        oos.writeUTF("hello,world");  // String
        // （2）保存一个Dog对象
        // 说明：如果需要序列化某个类，则该类必须实现Serializable接口或Externalizable接口
        oos.writeObject(new Dog("旺财", 10));

        // 3、关闭处理流
        oos.close();
        System.out.println("数据类型和数据保存完毕（序列化完成）");
    }
}